Skip to content

Comments

2026년 2월 11일 이종호스프린트4 심화 완료#67

Open
Jong-Ho-LEE-75 wants to merge 23 commits intocodeit-bootcamp-spring:이종호from
Jong-Ho-LEE-75:이종호스프린트4기본

Hidden character warning

The head ref may contain hidden characters: "\uc774\uc885\ud638\uc2a4\ud504\ub9b0\ud2b84\uae30\ubcf8"
Open

2026년 2월 11일 이종호스프린트4 심화 완료#67
Jong-Ho-LEE-75 wants to merge 23 commits intocodeit-bootcamp-spring:이종호from
Jong-Ho-LEE-75:이종호스프린트4기본

Conversation

@Jong-Ho-LEE-75
Copy link

스프린트미션 4 심화 완료
2026년 2월 11일

사용자목록 스크린샷

Jong-Ho-LEE-75 and others added 23 commits January 28, 2026 20:27
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 모든 DTO를 class에서 record로 변환
- Request DTO 13개, Response DTO 3개 record 적용
- Service 구현체에서 record accessor 메서드 사용하도록 변경
- DiscodeitApplication에서 record accessor 사용하도록 변경

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- application.yaml에 discodeit.repository 설정 추가
- JCF*Repository에 @ConditionalOnProperty 적용 (type=jcf, 기본값)
- File*Repository에 @ConditionalOnProperty 적용 (type=file)
- File*Repository에 @value로 file-directory 경로 주입

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Request DTO: 간결형 주석 유지
- Response DTO: 상세형에서 간결형으로 수정
- 초보자 가독성과 실무 스타일을 고려하여 통일

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Entity 클래스들에 Javadoc 주석 추가
- Repository 인터페이스 및 구현체에 주석 추가
- Service 인터페이스 및 구현체에 주석 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- BasicUserService: 누락된 클래스 닫는 중괄호 추가
- DiscodeitApplication: online() → isOnline() 수정
- BasicUserStatusService: lastActiveAt() → lastAccessAt() 수정
- BasicChannelService: participantIds() → memberIds() 수정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * 전역 예외 처리 핸들러(GlobalExceptionHandler) 구현
    - NoSuchElementException → 404 NOT_FOUND
    - IllegalArgumentException → 400 BAD_REQUEST
    - 기타 예외 → 500 INTERNAL_SERVER_ERROR
  * ErrorResponse DTO 생성 (에러 메시지, 타임스탬프)
  * 7개 REST API 컨트롤러 구현 (@RequestMapping 사용):
    - UserController: 사용자 CRUD, 온라인 상태 관리
    - AuthController: 로그인 기능
    - ChannelController: 공개/비공개 채널 CRUD
    - MessageController: 메시지 CRUD, 첨부파일 관리
    - ReadStatusController: 읽기 상태 관리
    - BinaryContentController: 바이너리 파일 조회
  * DiscodeitApplication의 테스트 로직(42~239줄) 삭제
    - 순수한 Spring Boot 애플리케이션 시작점으로 변경

- 변경 이유:
  * 웹 API 제공을 위한 컨트롤러 레이어 필요
  * 일관된 예외 처리로 API 응답 표준화
  * main 메서드의 테스트 로직은 실제 운영에 불필요

- 주요 파일:
  * src/main/java/com/sprint/mission/discodeit/controller/*.java (7개 컨트롤러)
  * src/main/java/com/sprint/mission/discodeit/dto/response/ErrorResponse.java
  * src/main/java/com/sprint/mission/discodeit/DiscodeitApplication.java

- 테스트 결과:
  * 사용자 생성 API 정상 작동 확인
  * 로그인 API 정상 작동 확인
  * 공개 채널 생성 API 정상 작동 확인
  * 404 예외 처리 정상 작동 확인

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * UserController: 사용자 생성/수정 메서드의 중복 @RequestBody 제거
    - createUser: profileRequest 파라미터 제거 (null 전달)
    - updateUser: profileRequest 파라미터 제거 (null 전달)
  * MessageController: 메시지 생성 메서드의 중복 @RequestBody 제거
    - createMessage: attachmentRequests 파라미터 제거 (null 전달)

- 변경 이유:
  * Spring에서는 하나의 메서드에 여러 개의 @RequestBody 사용 불가
  * HTTP 요청 본문은 하나만 존재하기 때문
  * 파일 업로드는 향후 별도 엔드포인트로 구현 가능

- 주요 파일:
  * src/main/java/com/sprint/mission/discodeit/controller/UserController.java
  * src/main/java/com/sprint/mission/discodeit/controller/MessageController.java

- 테스트 결과:
  * 사용자 생성/조회 API 정상 작동 확인
  * 로그인 API 정상 작동 확인
  * 채널 생성 API 정상 작동 확인
  * 메시지 전송/조회 API 정상 작동 확인
  * 404 예외 처리 정상 작동 확인

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * Postman Collection v3 생성 (모든 API에 Tests 스크립트 추가)
  * Environment v3 생성 (13개 변수 포함)
  * 온라인 상태 업데이트 Tests: lastAccessAt → lastActiveAt 필드명 수정
  * binaryContentId에 기본 UUID 값 설정으로 500 에러 방지
  * AuthController 로그인 엔드포인트에 consumes 설정 추가
  * API 문서화 및 가이드 추가 (v1/v2/v3)
  * Python 자동화 테스트 스크립트 작성

- 변경 이유:
  * Postman Collection Runner로 전체 API 자동 테스트 가능하도록 구성
  * 사용자 역할 분리 (user1: 일반, user2: 로그인, user3: 삭제, user4: 수정)
  * API 응답 필드명과 Tests 스크립트 일치로 테스트 안정성 확보
  * 초기 설정으로 3명 사용자 + 3개 채널 미리 생성하여 삭제 테스트 후에도 지속적 테스트 가능
  * "No tests found" 에러 및 user2 로그인 404 에러 완전 해결

- 주요 파일:
  * Discodeit_API_Collection_v3.postman_collection.json
  * Discodeit_Environment_v3.postman_environment.json
  * README_v3.md (완벽 가이드)
  * API_DOCUMENTATION.md (전체 API 문서)
  * AuthController.java (로그인 수정)
  * test_api_automation.py (자동화 스크립트)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * docs/README4.md 파일 작성 (완벽 가이드)
  * 웹 API 기반 Spring Boot 애플리케이션 전체 구조 설명
  * 계층별 상세 설명 (Controller, Service, Repository, Entity, DTO)
  * HTTP 요청부터 응답까지 데이터 흐름 설명
  * 초보자를 위한 핵심 개념 정리
  * 실습 예제 및 Postman 테스트 방법
  * .gitignore에서 docs 폴더 제외 규칙 제거

- 변경 이유:
  * 초보자가 웹 API로 컨트롤러를 변경했을 때 어떻게 동작하는지 이해하기 위해
  * 전체 프로젝트 구조와 각 계층의 역할을 명확하게 설명
  * 실무 Spring Boot 프로젝트의 기본 패턴 학습

- 주요 파일:
  * docs/README4.md (8개 섹션, 완전한 가이드)
  * .gitignore (docs 폴더 추적 허용)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * GlobalExceptionHandler를 controller 패키지에서 exception 패키지로 이동
  * ErrorResponse를 dto/response 패키지에서 exception 패키지로 이동
  * 패키지 선언 및 import 구문 업데이트

- 변경 이유:
  * 예외 처리는 횡단 관심사(Cross-cutting concern)로 별도 패키지 관리가 적절
  * 역할별 패키지 분리로 코드 구조 개선
  * 향후 커스텀 예외 클래스 추가 시 확장성 향상
  * 실무 관행에 맞는 패키지 구조 적용

- 주요 파일:
  * controller/GlobalExceptionHandler.java → exception/GlobalExceptionHandler.java
  * dto/response/ErrorResponse.java → exception/ErrorResponse.java

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * Discodeit API Collection v3 Postman 파일 추가
  * 모든 REST API 엔드포인트 테스트 케이스 포함
  * 사용자, 인증, 채널, 메시지, 읽기 상태 API 테스트 환경 구성

- 변경 이유:
  * API 테스트를 위한 Postman Collection 제공
  * 팀원 및 다른 개발자들이 쉽게 API 테스트 가능
  * API 문서화 및 테스트 자동화 기반 마련

- 주요 파일:
  * Discodeit API Collection v3.postman_collection.json

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * 프로필 이미지 업로드 기능 추가 (multipart/form-data 지원)
  * RESTful API 경로 표준화 (GET /users, GET /binary-contents/{id})
  * 애플리케이션 시작 시 초기 데이터 자동 로드 (DataInitializer)
  * 사용자 목록 조회용 UserDto 추가
  * 웹 UI 개선 (사용자 생성/수정/삭제 기능, 프로필 이미지 표시)
  * IntelliJ HTTP Client 테스트 파일 생성 (Postman 대체)
  * 문서 파일 docs/ 폴더로 정리

- 변경 이유:
  * 프로필 이미지 업로드를 위한 multipart 지원 필요
  * API 경로를 RESTful 표준에 맞게 통일
  * 테스트 환경 개선을 위해 초기 데이터 자동 로드
  * IntelliJ 내장 HTTP Client로 API 테스트 자동화
  * 프로젝트 구조 개선 및 문서 정리

- 주요 파일:
  * src/main/java/com/sprint/mission/discodeit/config/DataInitializer.java (NEW)
  * src/main/java/com/sprint/mission/discodeit/controller/UserController.java
  * src/main/java/com/sprint/mission/discodeit/dto/response/UserDto.java (NEW)
  * src/main/resources/data/users.json (NEW)
  * src/main/resources/data/profiles/*.jpg (NEW)
  * src/main/resources/static/*.html (NEW)
  * api-tests-with-env.http (NEW)
  * API-TEST-GUIDE.md (NEW)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * API 테스트 관련 파일을 docs/ 폴더로 이동
  * API-TEST-GUIDE.md, api-tests.http, api-tests-with-env.http, http-client.env.json

- 변경 이유:
  * 문서 파일은 docs 폴더에서 관리하도록 프로젝트 구조 개선

- 주요 파일:
  * docs/API-TEST-GUIDE.md
  * docs/api-tests-with-env.http

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * http-client.env.json의 사용자 및 프로필 ID를 최신 값으로 업데이트

- 변경 이유:
  * 애플리케이션 재시작으로 새로운 사용자 생성되어 ID 변경됨
  * 404 에러 방지를 위해 최신 ID로 동기화

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * BaseEntity, User, BinaryContent에 고정 UUID 생성자 추가
  * users.json에 각 사용자별 고정 UUID 할당 (한성재: 10000000-...-001, 장현민: 20000000-...-001 등)
  * DataInitializer를 Repository 직접 사용 방식으로 리팩토링
  * HTTP Client 환경 변수를 고정 UUID로 업데이트

- 변경 이유:
  * 애플리케이션 재시작 시 UUID가 변경되어 Postman/HTTP Client 환경 변수를 매번 재설정해야 하는 문제 해결
  * 테스트 환경의 안정성과 예측 가능성 향상
  * 더 이상 환경/컬렉션 삭제 후 재임포트 불필요

- 주요 파일:
  * src/main/java/.../entity/BaseEntity.java - protected 생성자 추가
  * src/main/java/.../entity/User.java - 고정 UUID 생성자 추가
  * src/main/java/.../entity/BinaryContent.java - 고정 UUID 생성자 추가
  * src/main/java/.../config/DataInitializer.java - Service → Repository 직접 사용
  * src/main/resources/data/users.json - 고정 UUID 필드 추가
  * docs/http-client.env.json - 고정 UUID로 업데이트

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * 기존 사용자 삭제 (한성재, 장현민, 전명훈, 서현하)
  * 새로운 사용자 생성 (김철수, 이영희, 박민수, 최지연)
  * docs 폴더 위치 변경 (discodeit/docs → sprint/mission/docs)
  * Postman Environment 및 Collection JSON 파일 재생성
  * IntelliJ HTTP Client 환경 파일 추가
  * 새로운 프로필 이미지 파일 추가 (kimcs.jpg, leeyh.jpg, parkms.jpg, choijy.jpg)

- 변경 이유:
  * 테스트 데이터를 한국 이름으로 통일하여 가독성 및 일관성 향상
  * docs 폴더를 프로젝트 패키지 구조에 맞게 재배치
  * Postman 파일을 최신 API 스펙 및 고정 UUID에 맞게 재생성
  * 모든 테스트 환경에서 동일한 사용자 데이터 사용

- 주요 파일:
  * src/main/resources/data/users.json - 새로운 사용자 데이터
  * src/main/resources/data/profiles/*.jpg - 새로운 프로필 이미지
  * src/main/java/com/sprint/mission/docs/Discodeit.postman_environment.json
  * src/main/java/com/sprint/mission/docs/Discodeit API.postman_collection.json
  * src/main/java/com/sprint/mission/docs/http-client.env.json

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * user-list.html을 스크린샷 레이아웃에 맞춰 수정
  * 사용자 카드를 수평 레이아웃으로 변경하고 간격 제거
  * DiceBear API를 활용한 성별별 아바타 자동 생성 구현
  * index.html을 user-list.html로 자동 리다이렉트하도록 수정
  * users.html 제거 (중복 페이지)
  * users.json에서 profileId를 null로 설정하여 외부 아바타 사용

- 변경 이유:
  * 스크린샷과 동일한 사용자 목록 UI 구현 필요
  * 각 사용자 카드가 붙어있는 형태로 표시
  * 남자/여자 구분에 따른 프로필 이미지 자동 생성
  * 불필요한 페이지 정리 및 사용자 경험 개선

- 주요 파일:
  * src/main/resources/static/user-list.html
  * src/main/resources/static/index.html
  * src/main/resources/data/users.json
  * src/main/java/com/sprint/mission/docs/스크린샷 2026-02-11 오전 10.58.33.png

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * .gitignore에 newman/ 폴더와 newman-report*.html 패턴 추가
  * 자동 생성되는 Newman 테스트 리포트 파일들을 버전 관리에서 제외

- 변경 이유:
  * Newman 테스트 실행 시마다 생성되는 리포트 파일들은 버전 관리 대상이 아님
  * 저장소 크기 증가 방지 및 불필요한 커밋 이력 생성 방지

- 주요 파일:
  * .gitignore

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * Postman API 테스트 컬렉션 구성 (23개 테스트, 100% 성공)
  * 웹 API 요구사항 순서대로 테스트 자동화
  * 사용자별 실제 프로필 이미지 시스템 구현
  * 프로필 이미지 자동 생성 로직 개선 (한글 이니셜 지원)
  * BinaryContent 및 UserStatus 엔티티 개선

- 변경 이유:
  * 스프린트미션4 심화 과제 완료
  * API 테스트 자동화를 통한 품질 보증
  * 사용자 프로필 시스템으로 UI/UX 개선

- 주요 파일:
  * docs/Discodeit API.postman_collection.json
  * docs/Discodeit.postman_environment.json
  * src/main/java/.../config/DataInitializer.java
  * src/main/resources/data/profiles/*.png (4개)
  * src/main/resources/data/users.json

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 변경한 내용:
  * BasicMessageService에 Spring CollectionUtils 적용
  * 첨부파일 저장 시 null 및 empty 체크를 CollectionUtils.isEmpty()로 변경
  * 첨부파일 삭제 시 null 체크를 CollectionUtils.isEmpty()로 변경

- 변경 이유:
  * 코드 리뷰 피드백 반영
  * Spring 표준 유틸리티 사용으로 코드 간결성 및 안전성 향상
  * null 체크와 empty 체크를 한 번에 처리

- 주요 파일:
  * src/main/java/com/sprint/mission/discodeit/service/basic/BasicMessageService.java

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant